1   /*
2    * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4    *
5    * This code is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License version 2 only, as
7    * published by the Free Software Foundation.  Oracle designates this
8    * particular file as subject to the "Classpath" exception as provided
9    * by Oracle in the LICENSE file that accompanied this code.
10   *
11   * This code is distributed in the hope that it will be useful, but WITHOUT
12   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14   * version 2 for more details (a copy is included in the LICENSE file that
15   * accompanied this code).
16   *
17   * You should have received a copy of the GNU General Public License version
18   * 2 along with this work; if not, write to the Free Software Foundation,
19   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20   *
21   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22   * or visit www.oracle.com if you need additional information or have any
23   * questions.
24   */
25  
26  package sun.tools.jconsole.resources;
27  
28  import java.util.*;
29  
30  import static java.awt.event.KeyEvent.*;
31  
32  /**
33   * <p> This class represents the <code>ResourceBundle</code>
34   * for the following package(s):
35   *
36   * <ol>
37   * <li> sun.tools.jconsole
38   * </ol>
39   *
40   * <P>
41   * Subclasses must override <code>getContents0</code> and provide an array,
42   * where each item in the array consists of a <code>String</code> key,
43   * and either a <code>String</code> value associated with that key,
44   * or if the keys ends with ".mnemonic", an element
45   * representing a mnemomic keycode <code>int</code> or <code>char</code>.
46   */
47  public class JConsoleResources extends ListResourceBundle {
48  
49      /**
50       * Returns the contents of this <code>ResourceBundle</code>.
51       *
52       * <p>
53       *
54       * @return the contents of this <code>ResourceBundle</code>.
55       */
56      protected Object[][] getContents0() {
57          Object[][] temp = new Object[][] {
58                  // NOTE 1: The value strings in this file containing "{0}" are
59          //         processed by the java.text.MessageFormat class.  Any
60          //         single quotes appearing in these strings need to be
61          //         doubled up.
62          //
63          // NOTE 2: To make working with this file a bit easier, please
64          //         maintain these messages in ASCII sorted order by
65          //         message key.
66          //
67          // LOCALIZE THIS
68          {" 1 day"," 1 day"},
69          {" 1 hour"," 1 hour"},
70          {" 1 min"," 1 min"},
71          {" 1 month"," 1 month"},
72          {" 1 year"," 1 year"},
73          {" 2 hours"," 2 hours"},
74          {" 3 hours"," 3 hours"},
75          {" 3 months"," 3 months"},
76          {" 5 min"," 5 min"},
77          {" 6 hours"," 6 hours"},
78          {" 6 months"," 6 months"},
79          {" 7 days"," 7 days"},
80          {"10 min","10 min"},
81          {"12 hours","12 hours"},
82          {"30 min","30 min"},
83          {"<","<"},
84          {"<<","<<"},
85          {">",">"},
86          {"ACTION","ACTION"},
87          {"ACTION_INFO","ACTION_INFO"},
88          {"All","All"},
89          {"Apply","Apply"},
90          {"Architecture","Architecture"},
91          {"Array, OpenType", "Array, OpenType"},
92          {"Array, OpenType, Numeric value viewer","Array, OpenType, Numeric value viewer"},
93          {"Attribute","Attribute"},
94          {"Attribute value","Attribute value"},
95          {"Attribute values","Attribute values"},
96          {"Attributes","Attributes"},
97          {"Blank", "Blank"},
98          {"BlockedCount WaitedCount",
99               "Total blocked: {0}  Total waited: {1}\n"},
100         {"Boot class path","Boot class path"},
101         {"BorderedComponent.moreOrLessButton.toolTip", "Toggle to show more or less information"},
102         {"CPU Usage","CPU Usage"},
103         {"CPUUsageFormat","CPU Usage: {0}%"},
104         {"Cancel","Cancel"},
105         {"Cascade", "Cascade"},
106         {"Cascade.mnemonic", 'C'},
107         {"Chart:", "Chart:"},
108         {"Chart:.mnemonic", 'C'},
109         {"Class path","Class path"},
110         {"Class","Class"},
111         {"ClassName","ClassName"},
112         {"ClassTab.infoLabelFormat", "<html>Loaded: {0}    Unloaded: {1}    Total: {2}</html>"},
113         {"ClassTab.loadedClassesPlotter.accessibleName", "Chart for Loaded Classes."},
114         {"Classes","Classes"},
115         {"Close","Close"},
116         {"Column.Name", "Name"},
117         {"Column.PID", "PID"},
118         {"Committed memory","Committed memory"},
119         {"Committed virtual memory","Committed virtual memory"},
120         {"Committed", "Committed"},
121         {"Compiler","Compiler"},
122         {"CompositeData","CompositeData"},
123         {"Config","Config"},
124         {"Connect", "Connect"},
125         {"Connect.mnemonic", 'C'},
126         {"Connect...","Connect..."},
127         {"ConnectDialog.connectButton.toolTip", "Connect to Java Virtual Machine"},
128         {"ConnectDialog.accessibleDescription", "Dialog for making a new connection to a local or remote Java Virtual Machine"},
129         {"ConnectDialog.masthead.accessibleName", "Masthead Graphic"},
130         {"ConnectDialog.masthead.title", "New Connection"},
131         {"ConnectDialog.statusBar.accessibleName", "Status Bar"},
132         {"ConnectDialog.title", "JConsole: New Connection"},
133         {"Connected. Click to disconnect.","Connected. Click to disconnect."},
134         {"Connection failed","Connection failed"},
135         {"Connection", "Connection"},
136         {"Connection.mnemonic", 'C'},
137         {"Connection name", "Connection name"},
138         {"ConnectionName (disconnected)","{0} (disconnected)"},
139         {"Constructor","Constructor"},
140         {"Current classes loaded", "Current classes loaded"},
141         {"Current heap size","Current heap size"},
142         {"Current value","Current value: {0}"},
143         {"Create", "Create"},
144         {"Daemon threads","Daemon threads"},
145         {"Disconnected. Click to connect.","Disconnected. Click to connect."},
146         {"Double click to expand/collapse","Double click to expand/collapse"},
147         {"Double click to visualize", "Double click to visualize"},
148         {"Description", "Description"},
149         {"Description: ", "Description: "},
150         {"Descriptor", "Descriptor"},
151         {"Details", "Details"},
152         {"Detect Deadlock", "Detect Deadlock"},
153         {"Detect Deadlock.mnemonic", 'D'},
154         {"Detect Deadlock.toolTip", "Detect deadlocked threads"},
155         {"Dimension is not supported:","Dimension is not supported:"},
156         {"Discard chart", "Discard chart"},
157         {"DurationDaysHoursMinutes","{0,choice,1#{0,number,integer} day |1.0<{0,number,integer} days }" +
158                                     "{1,choice,0<{1,number,integer} hours |1#{1,number,integer} hour |1<{1,number,integer} hours }" +
159                                     "{2,choice,0<{2,number,integer} minutes|1#{2,number,integer} minute|1.0<{2,number,integer} minutes}"},
160 
161         {"DurationHoursMinutes","{0,choice,1#{0,number,integer} hour |1<{0,number,integer} hours }" +
162                                 "{1,choice,0<{1,number,integer} minutes|1#{1,number,integer} minute|1.0<{1,number,integer} minutes}"},
163 
164         {"DurationMinutes","{0,choice,1#{0,number,integer} minute|1.0<{0,number,integer} minutes}"},
165         {"DurationSeconds","{0} seconds"},
166         {"Empty array", "Empty array"},
167         {"Empty opentype viewer", "Empty opentype viewer"},
168         {"Error","Error"},
169         {"Error: MBeans already exist","Error: MBeans already exist"},
170         {"Error: MBeans do not exist","Error: MBeans do not exist"},
171         {"Error:","Error:"},
172         {"Event","Event"},
173         {"Exit", "Exit"},
174         {"Exit.mnemonic", 'x'},
175         {"Fail to load plugin", "Warning: Fail to load plugin: {0}"},
176         {"FileChooser.fileExists.cancelOption", "Cancel"},
177         {"FileChooser.fileExists.message", "<html><center>File already exists:<br>{0}<br>Do you want to replace it?"},
178         {"FileChooser.fileExists.okOption", "Replace"},
179         {"FileChooser.fileExists.title", "File Exists"},
180         {"FileChooser.savedFile", "<html>Saved to file:<br>{0}<br>({1} bytes)"},
181         {"FileChooser.saveFailed.message", "<html><center>Save to file failed:<br>{0}<br>{1}"},
182         {"FileChooser.saveFailed.title", "Save Failed"},
183         {"Free physical memory","Free physical memory"},
184         {"Free swap space","Free swap space"},
185         {"Garbage collector","Garbage collector"},
186         {"GTK","GTK"},
187         {"GcInfo","Name = ''{0}'', Collections = {1,choice,-1#Unavailable|0#{1,number,integer}}, Total time spent = {2}"},
188         {"GC time","GC time"},
189         {"GC time details","{0} on {1} ({2} collections)"},
190         {"Heap Memory Usage","Heap Memory Usage"},
191         {"Heap", "Heap"},
192         {"Help.AboutDialog.accessibleDescription", "Dialog containing information about JConsole and JDK versions"},
193         {"Help.AboutDialog.jConsoleVersion", "JConsole version:<br>{0}"},
194         {"Help.AboutDialog.javaVersion", "Java VM version:<br>{0}"},
195         {"Help.AboutDialog.masthead.accessibleName", "Masthead Graphic"},
196         {"Help.AboutDialog.masthead.title", "About JConsole"},
197         {"Help.AboutDialog.title", "JConsole: About"},
198         {"Help.AboutDialog.userGuideLink", "JConsole User Guide:<br>{0}"},
199         {"Help.AboutDialog.userGuideLink.mnemonic", 'U'},
200         {"Help.AboutDialog.userGuideLink.url", "http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html"},
201         {"HelpMenu.About.title", "About JConsole"},
202         {"HelpMenu.About.title.mnemonic", 'A'},
203         {"HelpMenu.UserGuide.title", "Online User Guide"},
204         {"HelpMenu.UserGuide.title.mnemonic", 'U'},
205         {"HelpMenu.title", "Help"},
206         {"HelpMenu.title.mnemonic", 'H'},
207         {"Hotspot MBeans...", "Hotspot MBeans..."},
208         {"Hotspot MBeans....mnemonic", 'H'},
209         {"Hotspot MBeans.dialog.accessibleDescription", "Dialog for managing Hotspot MBeans"},
210         {"Impact","Impact"},
211         {"Info","Info"},
212         {"INFO","INFO"},
213         {"Invalid plugin path", "Warning: Invalid plugin path: {0}"},
214         {"Invalid URL", "Invalid URL: {0}"},
215         {"Is","Is"},
216         {"Java Monitoring & Management Console", "Java Monitoring & Management Console"},
217         {"JConsole: ","JConsole: {0}"},
218         {"JConsole version","JConsole version \"{0}\""},
219         {"JConsole.accessibleDescription", "Java Monitoring & Management Console"},
220         {"JIT compiler","JIT compiler"},
221         {"Java Virtual Machine","Java Virtual Machine"},
222         {"Java","Java"},
223         {"Library path","Library path"},
224         {"Listeners","Listeners"},
225         {"Live Threads","Live threads"},
226         {"Loaded", "Loaded"},
227         {"Local Process:", "Local Process:"},
228         {"Local Process:.mnemonic", 'L'},
229         {"Look and Feel","Look and Feel"},
230         {"Masthead.font", "Dialog-PLAIN-25"},
231         {"Management Not Enabled","<b>Note</b>: The management agent is not enabled on this process."},
232         {"Management Will Be Enabled","<b>Note</b>: The management agent will be enabled on this process."},
233         {"MBeanAttributeInfo","MBeanAttributeInfo"},
234         {"MBeanInfo","MBeanInfo"},
235         {"MBeanNotificationInfo","MBeanNotificationInfo"},
236         {"MBeanOperationInfo","MBeanOperationInfo"},
237         {"MBeans","MBeans"},
238         {"MBeansTab.clearNotificationsButton", "Clear"},
239         {"MBeansTab.clearNotificationsButton.mnemonic", 'C'},
240         {"MBeansTab.clearNotificationsButton.toolTip", "Clear notifications"},
241         {"MBeansTab.compositeNavigationMultiple", "Composite Navigation {0}/{1}"},
242         {"MBeansTab.compositeNavigationSingle", "Composite Navigation"},
243         {"MBeansTab.refreshAttributesButton", "Refresh"},
244         {"MBeansTab.refreshAttributesButton.mnemonic", 'R'},
245         {"MBeansTab.refreshAttributesButton.toolTip", "Refresh attributes"},
246         {"MBeansTab.subscribeNotificationsButton", "Subscribe"},
247         {"MBeansTab.subscribeNotificationsButton.mnemonic", 'S'},
248         {"MBeansTab.subscribeNotificationsButton.toolTip", "Start listening for notifications"},
249         {"MBeansTab.tabularNavigationMultiple", "Tabular Navigation {0}/{1}"},
250         {"MBeansTab.tabularNavigationSingle", "Tabular Navigation"},
251         {"MBeansTab.unsubscribeNotificationsButton", "Unsubscribe"},
252         {"MBeansTab.unsubscribeNotificationsButton.mnemonic", 'U'},
253         {"MBeansTab.unsubscribeNotificationsButton.toolTip", "Stop listening for notifications"},
254         {"Manage Hotspot MBeans in: ", "Manage Hotspot MBeans in: "},
255         {"Max","Max"},
256         {"Maximum heap size","Maximum heap size"},
257         {"Memory","Memory"},
258         {"MemoryPoolLabel", "Memory Pool \"{0}\""},
259         {"MemoryTab.heapPlotter.accessibleName", "Memory usage chart for heap."},
260         {"MemoryTab.infoLabelFormat", "<html>Used: {0}    Committed: {1}    Max: {2}</html>"},
261         {"MemoryTab.nonHeapPlotter.accessibleName", "Memory usage chart for non heap."},
262         {"MemoryTab.poolChart.aboveThreshold", "which is above the threshold of {0}.\n"},
263         {"MemoryTab.poolChart.accessibleName", "Memory Pool Usage Chart."},
264         {"MemoryTab.poolChart.belowThreshold", "which is below the threshold of {0}.\n"},
265         {"MemoryTab.poolPlotter.accessibleName", "Memory usage chart for {0}."},
266         {"Message","Message"},
267         {"Method successfully invoked", "Method successfully invoked"},
268         {"Minimize All", "Minimize All"},
269         {"Minimize All.mnemonic", 'M'},
270         {"Minus Version", "This is {0} version {1}"},
271         {"Monitor locked",
272              "   - locked {0}\n"},
273         {"Motif","Motif"},
274         {"Name Build and Mode","{0} (build {1}, {2})"},
275         {"Name and Build","{0} (build {1})"},
276         {"Name","Name"},
277         {"Name: ","Name: "},
278         {"Name State",
279              "Name: {0}\n" +
280              "State: {1}\n"},
281         {"Name State LockName",
282              "Name: {0}\n" +
283              "State: {1} on {2}\n"},
284         {"Name State LockName LockOwner",
285              "Name: {0}\n" +
286              "State: {1} on {2} owned by: {3}\n"},
287         {"New Connection...", "New Connection..."},
288         {"New Connection....mnemonic", 'N'},
289         {"New value applied","New value applied"},
290         {"No attribute selected","No attribute selected"},
291         {"No deadlock detected","No deadlock detected"},
292         {"No value selected","No value selected"},
293         {"Non-Heap Memory Usage","Non-Heap Memory Usage"},
294         {"Non-Heap", "Non-Heap"},
295         {"Not Yet Implemented","Not Yet Implemented"},
296         {"Not a valid event broadcaster", "Not a valid event broadcaster"},
297         {"Notification","Notification"},
298         {"Notification buffer","Notification buffer"},
299         {"Notifications","Notifications"},
300         {"NotifTypes", "NotifTypes"},
301         {"Number of Threads","Number of Threads"},
302         {"Number of Loaded Classes","Number of Loaded Classes"},
303         {"Number of processors","Number of processors"},
304         {"ObjectName","ObjectName"},
305         {"Operating System","Operating System"},
306         {"Operation","Operation"},
307         {"Operation invocation","Operation invocation"},
308         {"Operation return value", "Operation return value"},
309         {"Operations","Operations"},
310         {"Overview","Overview"},
311         {"OverviewPanel.plotter.accessibleName", "Chart for {0}."},
312         {"Parameter", "Parameter"},
313         {"Password: ", "Password: "},
314         {"Password: .mnemonic", 'P'},
315         {"Password.accessibleName", "Password"},
316         {"Peak","Peak"},
317         {"Perform GC", "Perform GC"},
318         {"Perform GC.mnemonic", 'G'},
319         {"Perform GC.toolTip", "Request Garbage Collection"},
320         {"Plotter.accessibleName", "Chart"},
321         {"Plotter.accessibleName.keyAndValue", "{0}={1}\n"},
322         {"Plotter.accessibleName.noData", "No data plotted."},
323         {"Plotter.saveAsMenuItem", "Save data as..."},
324         {"Plotter.saveAsMenuItem.mnemonic", 'a'},
325         {"Plotter.timeRangeMenu", "Time Range"},
326         {"Plotter.timeRangeMenu.mnemonic", 'T'},
327         {"Problem adding listener","Problem adding listener"},
328         {"Problem displaying MBean", "Problem displaying MBean"},
329         {"Problem invoking", "Problem invoking"},
330         {"Problem removing listener","Problem removing listener"},
331         {"Problem setting attribute","Problem setting attribute"},
332         {"Process CPU time","Process CPU time"},
333         {"R/W","R/W"},
334         {"Readable","Readable"},
335         {"Received","Received"},
336         {"Reconnect","Reconnect"},
337         {"Remote Process:", "Remote Process:"},
338         {"Remote Process:.mnemonic", 'R'},
339         {"Remote Process.textField.accessibleName", "Remote Process"},
340         {"Remove","Remove"},
341         {"Restore All", "Restore All"},
342         {"Restore All.mnemonic", 'R'},
343         {"Return value", "Return value"},
344         {"ReturnType", "ReturnType"},
345         {"SeqNum","SeqNum"},
346         {"Size Bytes", "{0,number,integer} bytes"},
347         {"Size Gb","{0} Gb"},
348         {"Size Kb","{0} Kb"},
349         {"Size Mb","{0} Mb"},
350         {"Source","Source"},
351         {"Stack trace",
352               "\nStack trace: \n"},
353         {"Success:","Success:"},
354         // Note: SummaryTab.headerDateTimeFormat can be one the following:
355         // 1. A combination of two styles for date and time, using the
356         //    constants from class DateFormat: SHORT, MEDIUM, LONG, FULL.
357         //    Example: "MEDIUM,MEDIUM" or "FULL,SHORT"
358         // 2. An explicit string pattern used for creating an instance
359         //    of the class SimpleDateFormat.
360         //    Example: "yyyy-MM-dd HH:mm:ss" or "M/d/yyyy h:mm:ss a"
361         {"SummaryTab.headerDateTimeFormat", "FULL,FULL"},
362         {"SummaryTab.pendingFinalization.label", "Pending finalization"},
363         {"SummaryTab.pendingFinalization.value", "{0} objects"},
364         {"SummaryTab.tabName", "VM Summary"},
365         {"SummaryTab.vmVersion","{0} version {1}"},
366         {"TabularData are not supported", "TabularData are not supported"},
367         {"Threads","Threads"},
368         {"ThreadTab.infoLabelFormat", "<html>Live: {0}    Peak: {1}    Total: {2}</html>"},
369         {"ThreadTab.threadInfo.accessibleName", "Thread Information"},
370         {"ThreadTab.threadPlotter.accessibleName", "Chart for number of threads."},
371         {"Threshold","Threshold"},
372         {"Tile", "Tile"},
373         {"Tile.mnemonic", 'T'},
374         {"Time Range:", "Time Range:"},
375         {"Time Range:.mnemonic", 'T'},
376         {"Time", "Time"},
377         {"TimeStamp","TimeStamp"},
378         {"Total Loaded", "Total Loaded"},
379         {"Total classes loaded","Total classes loaded"},
380         {"Total classes unloaded","Total classes unloaded"},
381         {"Total compile time","Total compile time"},
382         {"Total physical memory","Total physical memory"},
383         {"Total threads started","Total threads started"},
384         {"Total swap space","Total swap space"},
385         {"Type","Type"},
386         {"Unavailable","Unavailable"},
387         {"UNKNOWN","UNKNOWN"},
388         {"Unknown Host","Unknown Host: {0}"},
389         {"Unregister", "Unregister"},
390         {"Uptime","Uptime"},
391         {"Uptime: ","Uptime: "},
392         {"Usage Threshold","Usage Threshold"},
393         {"remoteTF.usage","<b>Usage</b>: &lt;hostname&gt;:&lt;port&gt; OR service:jmx:&lt;protocol&gt;:&lt;sap&gt;"},
394         {"Used","Used"},
395         {"Username: ", "Username: "},
396         {"Username: .mnemonic", 'U'},
397         {"Username.accessibleName", "User Name"},
398         {"UserData","UserData"},
399         {"Virtual Machine","Virtual Machine"},
400         {"VM arguments","VM arguments"},
401         {"VM","VM"},
402         {"VMInternalFrame.accessibleDescription", "Internal frame for monitoring a Java Virtual Machine"},
403         {"Value","Value"},
404         {"Vendor", "Vendor"},
405         {"Verbose Output","Verbose Output"},
406         {"Verbose Output.toolTip", "Enable verbose output for class loading system"},
407         {"View value", "View value"},
408         {"View","View"},
409         {"Window", "Window"},
410         {"Window.mnemonic", 'W'},
411         {"Windows","Windows"},
412         {"Writable","Writable"},
413         {"You cannot drop a class here", "You cannot drop a class here"},
414         {"collapse", "collapse"},
415         {"connectionFailed1","Connection Failed: Retry?"},
416         {"connectionFailed2","The connection to {0} did not succeed.<br>" +
417                              "Would you like to try again?"},
418         {"connectionLost1","Connection Lost: Reconnect?"},
419         {"connectionLost2","The connection to {0} has been lost " +
420                            "because the remote process has been terminated.<br>" +
421                            "Would you like to reconnect?"},
422         {"connectingTo1","Connecting to {0}"},
423         {"connectingTo2","You are currently being connected to {0}.<br>" +
424                          "This will take a few moments."},
425         {"deadlockAllTab","All"},
426         {"deadlockTab","Deadlock"},
427         {"deadlockTabN","Deadlock {0}"},
428         {"expand", "expand"},
429         {"kbytes","{0} kbytes"},
430         {"operation","operation"},
431         {"plot", "plot"},
432         {"visualize","visualize"},
433         {"zz usage text",
434              "Usage: {0} [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ... ]\n\n" +
435              "  -interval   Set the update interval to n seconds (default is 4 seconds)\n" +
436              "  -notile     Do not tile windows initially (for two or more connections)\n" +
437              "  -pluginpath Specify the path that jconsole uses to look up the plugins\n" +
438              "  -version    Print program version\n\n" +
439              "  connection = pid || host:port || JMX URL (service:jmx:<protocol>://...)\n" +
440              "  pid         The process id of a target process\n" +
441              "  host        A remote host name or IP address\n" +
442              "  port        The port number for the remote connection\n\n" +
443              "  -J          Specify the input arguments to the Java virtual machine\n" +
444              "              on which jconsole is running"},
445         // END OF MATERIAL TO LOCALIZE
446         };
447 
448         String ls = System.getProperty("line.separator");
449         for(int i=0;i<temp.length;i++) {
450             if (temp[i][1] instanceof String){
451             temp[i][1] = temp[i][1].toString().replaceAll("\n",ls);
452             }
453         }
454 
455         return temp;
456 
457     }
458 
459     public synchronized Object[][] getContents() {
460         return getContents0();
461     }
462 }